﻿using System.Net.Http.Formatting;
using System.Web.Http;

namespace WebApi
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API 配置和服务

            // Web API 路由
            config.MapHttpAttributeRoutes();

            //自定义路由
            //config.Routes.MapHttpRoute(
            //    name: "ActionApi",
            //    routeTemplate: "api/{controller}/{action}/{id}",
            //    defaults: new { id = RouteParameter.Optional }
            //);

            ////以json格式显示数据
            ////清除所有序列化格式(清除默认xml)
            config.Formatters.Clear();
            ////添加Json格式的序列化器
            config.Formatters.Add(new JsonMediaTypeFormatter());
        }

        //注意：以下服务测试时用，浏览器中调用本地服务，如：
        //http://localhost:88/api/Students  (已发布)
        //或
        //http://localhost:56823/api/Students  (未发布)
        //发布时应屏蔽格式设置

        ////设置日期格式
        //config.Formatters.JsonFormatter.SerializerSettings.DateFormatString = "yyyy.MM.dd";



        /* WebAPI返回数据为xml或json格式
        * (1) 返回json或者xml跟浏览器有关,不同浏览器的默认格式不同，IE没有发送可接受xml和json类型，
        *     IE默认为json格式数据，而Firefox/chrome/Edge则返回了xml数据。
        * (2) WebAPI的返回数据类型是有请求头的accept来决定的：
        *     1.application/json和application/xml都没有时，返回浏览器的默认格式
        *     2.仅有application/json时，返回json数据
        *     3.仅有application/xml时，返回xml数据
        *     4.同时有application/json和application/json时，返回数据类型和两者的顺序无关，
        *     若两者优先级相同则返回浏览器的默认格式，若优先级不同则返回优先级高的类型。
              在ajax里acceept返回类型设置返回xml或者json
        * webapi返回json数据的解析有两种，一种缺省的XML格式，第二种是使用自带的Json格式化方式
       */
    }
}
